comp_include _get_cword _perlmodules


_perldoc()
{
    local cur prev prefix temp

    COMPREPLY=()
    cur=`_get_cword`
    prev=${COMP_WORDS[COMP_CWORD-1]}
    prefix=""

    # completing an option (may or may not be separated by a space)
    if [[ "$cur" == -?* ]]; then
    temp=$cur
    prev=${temp:0:2}
    cur=${temp:2}
    prefix=$prev
    fi

    # complete builtin perl functions
    case $prev in
    -f)
        COMPREPLY=( $( compgen -W 'chomp chop chr crypt hex index lc \
        lcfirst length oct ord pack q qq reverse rindex sprintf \
        substr tr uc ucfirst y m pos quotemeta s split study qr abs \
        atan2 cos exp hex int log oct rand sin sqrt srand pop push \
        shift splice unshift grep join map qw reverse sort unpack \
        delete each exists keys values binmode close closedir \
        dbmclose dbmopen die eof fileno flock format getc print \
        printf read readdir rewinddir seek seekdir select syscall \
        sysread sysseek syswrite tell telldir truncate warn write \
        pack read syscall sysread syswrite unpack vec -X chdir chmod \
        chown chroot fcntl glob ioctl link lstat mkdir open opendir \
        readlink rename rmdir stat symlink umask unlink utime caller \
        continue do dump eval exit goto last next redo return \
        sub wantarray caller import local my our package use defined \
        formline reset scalar undef \
        alarm exec fork getpgrp getppid getpriority kill pipe qx \
        setpgrp setpriority sleep system times wait waitpid \
        import no package require use bless dbmclose dbmopen package \
        ref tie tied untie use accept bind connect getpeername \
        getsockname getsockopt listen recv send setsockopt shutdown \
        socket socketpair msgctl msgget msgrcv msgsnd semctl semget \
        semop shmctl shmget shmread shmwrite endgrent endhostent \
        endnetent endpwent getgrent getgrgid getgrnam getlogin \
        getpwent getpwnam getpwuid setgrent setpwent endprotoent \
        endservent gethostbyaddr gethostbyname gethostent \
        getnetbyaddr getnetbyname getnetent getprotobyname \
        getprotobynumber getprotoent getservbyname getservbyport \
        getservent sethostent setnetent setprotoent setservent \
        gmtime localtime time times' -- $cur ) )
        return 0
        ;;
    esac

    case $cur in
    -*)
        COMPREPLY=( $( compgen -W '-h -v -t -u -m -l -F -X -f -q' -- $cur ))
        return 0
        ;;
    */*)
        return 0
        ;;
    *)
        _perlmodules
        COMPREPLY=( ${COMPREPLY[@]} $( compgen -W '$( PAGER=cat man perl 2>/dev/null | sed -ne "/perl.*Perl overview/,/perlwin32/s/^[^a-z0-9]*\([a-z0-9]*\).*$/\1/p")' -- $cur ) )

        return 0
        ;;
    esac
} # _perldoc()
